package com.SmartCare.utils;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;

public class DateTimeUtils {
    private static final DateTimeFormatter OUTPUT_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");

    public static LocalDate getCurrentDateTime() {
        // 获取当前日期和时间
        LocalDateTime currentDateTime = LocalDateTime.now();

        // 定义日期时间格式
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

        // 获取当前日期时间的日期部分
        LocalDate currentDatePart = currentDateTime.toLocalDate();

        return currentDatePart;
    }

    /**
     *
     * @param inputDateString
     * @return
     */
    public static LocalDateTime strToDatetime(String inputDateString ){
        // 定义日期时间格式
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm");

        // 解析字符串为日期时间对象
        LocalDateTime dateTime = LocalDateTime.parse(inputDateString, formatter);
        return dateTime;
    }



    /**
     * 时间格式类型转化
     * @param dateTime
     * @return
     */
    public static String formatDateTime(LocalDateTime dateTime) {
        return dateTime.format(OUTPUT_FORMATTER);

    }

    /**
     * 获取一周查询所需的开始和结束时间
     * duration 1 日、2 周、3 月，4 年
     * @return
     */
    public static LocalDateTime[] getStartAndEndDateTime(Integer days) {
        LocalDate currentDate = LocalDate.now();
        LocalDate xDaysAgo = currentDate.minus(days, ChronoUnit.DAYS);

        LocalDateTime startTime = LocalDateTime.of(xDaysAgo, LocalTime.MIN);
        LocalDateTime endTime = LocalDateTime.of(currentDate, LocalTime.MAX);

        return new LocalDateTime[] { startTime, endTime };
    }

    /**
     * 查询当天最小时间和最大时间
     * @return
     */
    public static String[] getStartAndEndTime() {
        //LocalTime currentTime = LocalTime.now();
        // 使用当前时间作为开始时间
        //LocalTime startTime = LocalTime.of(currentTime.getHour(), currentTime.getMinute(), 0);
        //最小时间
        LocalTime startTime = LocalTime.of(0,0, 0);
        // 设置结束时间为23:59:59
        LocalTime endTime = LocalTime.of(23, 59, 59);

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
        String formattedStartTime = startTime.format(formatter);
        String formattedEndTime = endTime.format(formatter);

        return new String[] { formattedStartTime, formattedEndTime };
    }
}
